package org.Yiran.timetale_re.worldgen;

import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraftforge.registries.DeferredRegister;
import org.Yiran.timetale_re.Timetale_re;

/**
 * 矿物特征注册类
 * <p>
 * 这个类用于注册和管理所有矿物的配置特征和放置特征。
 * </p>
 */
public class ModOreFeatures {
    
    /**
     * 配置特征注册器
     */
    public static final DeferredRegister<ConfiguredFeature<?, ?>> CONFIGURED_FEATURES = 
            DeferredRegister.create(Registries.CONFIGURED_FEATURE, Timetale_re.MODID);
    
    /**
     * 放置特征注册器
     */
    public static final DeferredRegister<PlacedFeature> PLACED_FEATURES = 
            DeferredRegister.create(Registries.PLACED_FEATURE, Timetale_re.MODID);

    /**
     * 注册所有材料的配置特征和放置特征
     * <p>
     * 为所有有矿石的材料注册配置特征和放置特征
     * </p>
     */
    public static void registerFeatures() {
        // 在1.20.1中，我们使用DeferredRegister来注册特征
        // 实际的注册已经在ModConfiguredFeatures和ModPlacedFeatures中处理
    }
    
    /**
     * 创建配置特征注册键
     * <p>
     * 创建一个用于注册配置特征的资源键
     * </p>
     *
     * @param name 特征名称
     * @return 配置特征的资源键
     */
    public static ResourceKey<ConfiguredFeature<?, ?>> createConfiguredFeatureKey(String name) {
        return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(Timetale_re.MODID, name));
    }
    
    /**
     * 创建放置特征注册键
     * <p>
     * 创建一个用于注册放置特征的资源键
     * </p>
     *
     * @param name 特征名称
     * @return 放置特征的资源键
     */
    public static ResourceKey<PlacedFeature> createPlacedFeatureKey(String name) {
        return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Timetale_re.MODID, name));
    }
}